package com.datatraffic.services;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONObject;

import com.datatraffic.salesup.VariablesdeSesion;

import android.util.Log;

public class AccionesOnline {

	public AccionesOnline()
	{
		
	}
	
	public JSONObject crearFormulario(JSONObject recibido)
	{
		String serverUrl = "http://190.85.84.229/salesup/servicio2/FormModule/services/formmodule_post.php";
		Log.i ("URL: ", serverUrl);
		JSONObject resultado;
		try {
			resultado = postToServer(serverUrl, recibido);
			Log.i("RESULTADO",resultado.toString());
		} catch (Exception e) {
			e.printStackTrace();
			resultado = jsonError(); 
		}
		VariablesdeSesion.getInstance().setContadorFormularios("0");
		return resultado;			
	}
	
	public JSONObject editarFormulario(JSONObject recibido)
	{
		String serverUrl = "http://190.85.84.229/salesup/servicio2/FormModule/services/formmodule_post.php";
		Log.i ("URL: ", serverUrl);
		JSONObject resultado;
		try {
			resultado = postToServer(serverUrl, recibido);
		} catch (Exception e) {
			e.printStackTrace();
			resultado = jsonError(); 
		}
		VariablesdeSesion.getInstance().setContadorFormularios("0");
		return resultado;			
	}	
	
	public JSONObject consultarFormulario(JSONObject recibido)
	{
		String serverUrl = "http://190.85.84.229/salesup/servicio2/FormModule/services/formmodule_post.php";
		Log.i ("URL: ", serverUrl);
		JSONObject resultado;
		try {
			resultado = postToServer(serverUrl, recibido);
			Log.i("RESULTADO",resultado.toString());
		} catch (Exception e) {
			e.printStackTrace();
			resultado = jsonError(); 
		}
		VariablesdeSesion.getInstance().setContadorFormularios("0");
		return resultado;		
	}
	
	public JSONObject consultarEstadisticas(JSONObject recibido)  throws Exception
	{
		String serverUrl = "http://190.85.84.229/salesup/servicio2/StatisticsModule/services/statisticsmodule_post.php";
		JSONObject resultado = postToServer(serverUrl, recibido);
		
		return resultado;				
	}
	
	public JSONObject hacerLogin(JSONObject recibido) throws Exception
	{
		Log.i("ONLINE", recibido.toString());
		String serverUrl = "http://190.85.84.229/salesup/servicio2/UserModule/services/usermodule_post.php";
		JSONObject resultado = postToServer(serverUrl, recibido);
		VariablesdeSesion.getInstance().setContadorFormularios("0");
		return resultado;
	}	
	
	private JSONObject postToServer(String serverUrl, JSONObject json) throws Exception {
		
		HttpParams httpparams = new BasicHttpParams();
		HttpConnectionParams.setConnectionTimeout(httpparams, 30000);
		HttpConnectionParams.setSoTimeout(httpparams, 30000);
		HttpClient client = new DefaultHttpClient(httpparams);
		HttpPost post = new HttpPost(serverUrl);
		List<NameValuePair> pairs = new ArrayList<NameValuePair>();
		pairs.add(new BasicNameValuePair("information", json.toString()));
		post.setEntity(new UrlEncodedFormEntity(pairs));
		HttpResponse response = client.execute(post);
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				response.getEntity().getContent(), "UTF-8"));
		String jsonResultStr = reader.readLine();
		JSONObject resultado = new JSONObject(jsonResultStr);
		VariablesdeSesion.getInstance().setContadorFormularios("0");
		return resultado;
	}
	
	private JSONObject jsonError()
	{
		JSONObject resultado = null;
		try {
			resultado = new JSONObject();
			resultado.put("error", "true");
			resultado.put("msg", "Ocurrio un error");
			resultado.put("total", 0);
			resultado.put("data",  new JSONArray());			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return resultado;
	}
}
